//记忆函数  纯函数的好处可缓存
function memoize(fn){
    const obj = {};
    return function(){
        let key = JSON.stringify(arguments)   //arguments是伪数组，可转成字符串来使用
        obj[key] = obj[key]||fn.apply(this,arguments)//如果有就赋值或者调用fn 传参传arguments 因为arguments是伪数组，所以需要用apply的第二个参数来展开伪数组或数组来传参
        return obj[key]
    }
}
function yuan(r){
    console.log(r*r)

    return Math.PI*r*r;
}
let call = memoize(yuan)
console.log(call(4))
console.log(call(4))
console.log(call(4))
